문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 블록런처/ModPE 개발 (문단 편집) === 렌더링(모델링) 관련 함수 === * Renderer.createHumanoidRenderer(); 새로운 렌더러를 생성한다. 플래이어 형태의 렌더러가 생성되며, 과거에는 스킨 오프셋이 다 맞추어져 있었으나, 지금은 아니다. '''블록런처 1.17.5 기준으로 사용하면 블록런처가 팅긴다.''' * Renderer.getModel(); 해당 렌더러의 모델을 가져온다. * model.getPart("Part"); 해당 모델의 각 파츠를 얻는다. 파츠의 종류는 * Head * Body * LeftArm * RightArm * LeftLeg * RightLeg 가 있다 --크기를 0으로 하면 모자 레이어 비스무리하게 구현은 가능하다-- * part.clear(); 해당 파츠의 모델링된 부분을 모두 지운다. 주로, Renderer.getPart();로 얻어온 파츠를 지울 때 사용한다. * part.addBox(x, y, z, sizeX, sizeY, sizeZ); 해당 파츠에 박스를 추가한다. 박스는 한쪽 방향으로만 늘어나기 때문에, 기준점을 반대쪽으로 절반만큼 옮겨주어야 한다. * part.setTextureOffset(x, y); 해당 렌더러를 적용할 엔티티에게 적용할 스킨의 오프셋을 설정한다. 각 인자들의 단위는 픽셀이다. 사용하지 않으면 0, 0으로 설정된다. * part.setTextureSize(sizeX, sizeY); 해당 스킨의 크기를 설정한다. 확대/축소용으로 사용하며, 각 인자들의 단위는 픽셀이다. 사용하지 않으면 64×32[* 원래 스킨 크기. 지금은 64×64인 경우도 있다.]로 설정된다. * part.setRotationPoint(x, y, z); 관절의 위치를 설정한다. 렌더링(모델링)을 하기위해서는 일단 새로운 렌더러를 만들어야 한다. Renderer.createHumanoidRenderer();로 만든 뒤, Renderer.getModel();을 이용하여 해당 렌더러의 모델을 가져온 다음, model.getPart("Part");를 이용하여 해당 파츠를 불러와서, part.clear();로 기존에 있던 파츠를 지우고, part.setTextureSize(sizeX, sizeY);로 스킨의 비율을 조절하고(대부분 생략한다), part.setTextureOffset(x, y);으로 스킨의 위치를 맞춘 다음에, part.addBox(x, y, z, sizeX, sizeY, sizeZ);를 사용하여 새로운 박스를 추가한다. 아쉽게도 각도 조절은 없다. 하지만 스마트 무빙을 제작하던중에 픽셀화라는 기법이 나왔다. 이렇게 렌더러를 모델링 하고나면 Entity.setRenderType(ent, renderType);으로 적용시키면 되는데 주의할점이 renderType은 Renderer.renderType으로 적어줘야 제대로 renderType이 적용된다 --비교적 [[객체지향]]적으로 만들었구만-- 이건 스킨 크기가 64×32인 경우를 기준으로 사람 모양 렌더러를 만드는 예제 소스이나, 현재 블록런처에서는 정상적으로 작동하지 않을 확률이 있다. {{{#!syntax javascript var renderer = Renderer.createHumanoidRenderer(); //새로운 렌더러 생성 var model = renderer.getModel(); //그 렌더러의 모델을 가져오고, var head = model.getPart("head"); //그 모델의 각 파츠를 가져온다. var body = model.getPart("body"); var rArm = model.getPart("rightArm"); var lArm = model.getPart("leftArm"); var rLeg = model.getPart("rightLeg"); var lLeg = model.getPart("leftLeg"); head.clear(); //기존에 있던 파츠는 지우고, body.clear(); rLeg.clear(); lLeg.clear(); rArm.clear(); lArm.clear(); head.setTextureOffset(0, 0); //각 파츠에 스킨 위치를 맞추고 head.addBox(-4, -8, -4, 8, 8, 8); //박스를 추가한다. body.setTextureOffset(16, 16); body.addBox(-4, 0, -2, 8, 12, 4); rLeg.setTextureOffset(0, 16); rLeg.addBox(-2, 0, -2, 4, 12, 4); lLeg.setTextureOffset(0, 16); lLeg.addBox(-2, 0, -2, 4, 12, 4); lArm.setTextureOffset(40, 16); lArm.addBox(-1, -2, -1.5, 4, 12, 4); rArm.setTextureOffset(40, 16); rArm.addBox(-3, -2, -1.5, 4, 12, 4); }}}저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기